using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using System.Windows.Media;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using MaterialDesignThemes.Wpf.Transitions;
using Simple4.Common;

namespace Simple4.ViewModel
{
    public partial class MainViewModel : ObservableObject
    {
        [ObservableProperty] public ObservableCollection<MetroInfo> _metroInfos;

        [ObservableProperty] public List<string> _Colors;

        [ObservableProperty] public List<TransitionEffectKind> _kinds;

        public MainViewModel()
        {
            MetroInfos = new ObservableCollection<MetroInfo>();

            Kinds = new List<TransitionEffectKind>();
            Kinds.Add(TransitionEffectKind.ExpandIn);
            Kinds.Add(TransitionEffectKind.FadeIn);
            Kinds.Add(TransitionEffectKind.SlideInFromLeft);
            Kinds.Add(TransitionEffectKind.SlideInFromTop);
            Kinds.Add(TransitionEffectKind.SlideInFromRight);
            Kinds.Add(TransitionEffectKind.SlideInFromBottom);

            Colors = new List<string>();
            Colors.Add("#FF8C69");
            Colors.Add("#FF8247");
            Colors.Add("#FF7256");
            Colors.Add("#FF6347");
            Colors.Add("#FFA07A");
            Colors.Add("#FF82AB");
            Colors.Add("#FF7F00");
            Colors.Add("#FF69B4");
            Colors.Add("#FFA500");
            Colors.Add("#FF83FA");
            Colors.Add("#FF7F24");
            Colors.Add("#FF6A6A");
            Colors.Add("#FFA54F");
            Colors.Add("#FF8C00");
            Colors.Add("#FF7F50");
            Colors.Add("#FF6EB4");
            Colors.Add("#00CED1");
            Colors.Add("#00C5CD");
            Colors.Add("#008B8B");
            Colors.Add("#00688B");
            Colors.Add("#00E5EE");
            Colors.Add("#00CD00");
            Colors.Add("#009ACD");
            Colors.Add("#00868B");
            Colors.Add("#00EE00");
            Colors.Add("#00CD66");
            Colors.Add("#00B2EE");
            Colors.Add("#008B00");
            Colors.Add("#00EE76");
            Colors.Add("#00CDCD");
            Colors.Add("#00BFFF");
            Colors.Add("#008B45");
            Colors.Add("#87CEFF");
            Colors.Add("#858585");
            Colors.Add("#838B83");
            Colors.Add("#7FFF00");
            Colors.Add("#7D7D7D");
            Colors.Add("#87CEFA");
            Colors.Add("#848484");
            Colors.Add("#836FFF");
            Colors.Add("#7F7F7F");
            Colors.Add("#7D26CD");
            Colors.Add("#87CEEB");
            Colors.Add("#8470FF");
            Colors.Add("#828282");
            Colors.Add("#7EC0EE");
            Colors.Add("#7CFC00");
            Colors.Add("#878787");
            Colors.Add("#838B8B");
            Colors.Add("#7FFFD4");
            Colors.Add("#7D9EC0");
            Colors.Add("#7CCD7C");
        }

        [RelayCommand]
        public async void Refush()
        {
            MetroInfos.Clear();
            for (int i = 0; i < 60; i++)
            {
                MetroInfos.Add(new MetroInfo()
                {
                    Name = "应用" + i,
                    Color = new SolidColorBrush(
                        (Color)ColorConverter.ConvertFromString(Colors[new Random().Next(0, 51)])),
                    Width = new Random().Next(0, 8) == 3 ? 206 : 100,
                    Height = 100,
                    Effact = new TransitionEffect()
                    {
                        Kind = Kinds[new Random().Next(2, 6)],
                        Duration = new TimeSpan(0, 0, 0, 0, 900)
                    }
                });
                await Task.Delay(10);
            }
        }
    }
}